package br.com.sgmf.model;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;

@Entity
@Table(name = "historico_veiculo")
public class HistoricoVeiculo implements Serializable {

	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Integer id;

	@Temporal(value = TemporalType.DATE)
	private Date data;

	@Column(nullable = false)
	private Double quilometragem;

	@Column(nullable = false)
	private Double combustivel;

	@Column(name = "pneu_dianteiro_direito", nullable = false)
	private Integer pneuDianteiroDireito;

	@Column(name = "pneu_dianteiro_esquerdo", nullable = false)
	private Integer pneuDianteiroEsquerdo;

	@Column(name = "pneu_traseiro_direito_fora", nullable = false)
	private Integer pneuTraseiroDireitoFora;

	@Column(name = "pneu_traseiro_direito_dentro", nullable = false)
	private Integer pneuTraseiroDireitoDentro;

	@Column(name = "pneu_traseiro_esquerdo_fora", nullable = false)
	private Integer pneuTraseiroEsquerdoFora;

	@Column(name = "pneu_traseiro_esquerdo_dentro", nullable = false)
	private Integer pneuTraseiroEsquerdoDentro;

	@ManyToOne
	@JoinColumn(name = "veiculo_id")
	private Veiculo veiculo;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public Date getData() {
		return data;
	}

	public void setData(Date data) {
		this.data = data;
	}

	public Double getQuilometragem() {
		return quilometragem;
	}

	public void setQuilometragem(Double quilometragem) {
		this.quilometragem = quilometragem;
	}

	public Double getCombustivel() {
		return combustivel;
	}

	public void setCombustivel(Double combustivel) {
		this.combustivel = combustivel;
	}

	public Integer getPneuDianteiroDireito() {
		return pneuDianteiroDireito;
	}

	public void setPneuDianteiroDireito(Integer pneuDianteiroDireito) {
		this.pneuDianteiroDireito = pneuDianteiroDireito;
	}

	public Integer getPneuDianteiroEsquerdo() {
		return pneuDianteiroEsquerdo;
	}

	public void setPneuDianteiroEsquerdo(Integer pneuDianteiroEsquerdo) {
		this.pneuDianteiroEsquerdo = pneuDianteiroEsquerdo;
	}

	public Integer getPneuTraseiroDireitoFora() {
		return pneuTraseiroDireitoFora;
	}

	public void setPneuTraseiroDireitoFora(Integer pneuTraseiroDireitoFora) {
		this.pneuTraseiroDireitoFora = pneuTraseiroDireitoFora;
	}

	public Integer getPneuTraseiroDireitoDentro() {
		return pneuTraseiroDireitoDentro;
	}

	public void setPneuTraseiroDireitoDentro(Integer pneuTraseiroDireitoDentro) {
		this.pneuTraseiroDireitoDentro = pneuTraseiroDireitoDentro;
	}

	public Integer getPneuTraseiroEsquerdoFora() {
		return pneuTraseiroEsquerdoFora;
	}

	public void setPneuTraseiroEsquerdoFora(Integer pneuTraseiroEsquerdoFora) {
		this.pneuTraseiroEsquerdoFora = pneuTraseiroEsquerdoFora;
	}

	public Integer getPneuTraseiroEsquerdoDentro() {
		return pneuTraseiroEsquerdoDentro;
	}

	public void setPneuTraseiroEsquerdoDentro(Integer pneuTraseiroEsquerdoDentro) {
		this.pneuTraseiroEsquerdoDentro = pneuTraseiroEsquerdoDentro;
	}

	public Veiculo getVeiculo() {
		return veiculo;
	}

	public void setVeiculo(Veiculo veiculo) {
		this.veiculo = veiculo;
	}

	@Override
	public int hashCode() {
		return HashCodeBuilder.reflectionHashCode(this);
	}

	@Override
	public boolean equals(Object obj) {
		return EqualsBuilder.reflectionEquals(this, obj);
	}

}
